#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <functional>
void Print_pending(sigset_t &pending)
{
    printf("我是一个进程 (%d) ,pending: ", getpid());
    for (int i = 31; i >= 1; --i)
    {
        if (sigismember(&pending, i))
        {
            std::cout << " 1 ";
        }
        else
        {
            std::cout << " 0 ";
        }
    }
    std::cout << std::endl;
}

int main()
{
    // 首先屏蔽2号信号
    sigset_t block;
    sigemptyset(&block);                     // 初始化信号集
    sigaddset(&block, SIGINT);               // 添加2号信号
    sigprocmask(SIG_BLOCK, &block, nullptr); // 屏蔽2号信号
    while (true)
    {
        // 获取pending信号集
        sigset_t pending;
        sigpending(&pending);

        // 打印信号集
        Print_pending(pending);
    }

    return 0;
}